/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package examples;

import java.net.*;
import java.util.Iterator;
import org.jgrapht.*;
import org.jgrapht.graph.*;
import org.jgrapht.traverse.DepthFirstIterator;
import pedigreereconstruction.*;
import relationships.*;

/**
 *
 * @author arthiramachandran
 */
public class GraphDemo {

    public static void main(String[] args) {
        
        ProbabilisticPedigree p = new ProbabilisticPedigree();
                
        Individual i1 = new Individual("K111");
        Individual i2 = new Individual("K222");
        Individual i3 = new Individual("K333");
        
        //p.addRelationship(new ProbabilisticRelationship(i1, i2, 5, 5, 5), true);
        //p.addRelationship(new ProbabilisticRelationship(i1, i3, 15, 15, 15), true);

        System.out.println(p.printGraph());
        
        //p.removeRelationship(new ProbabilisticRelationship(i1, i2, 5, 5, 5));
        System.out.println("Removing edge");
        System.out.println(p.printGraph());
        
        /*
        UndirectedGraph<String, DefaultEdge> stringGraph = createStringGraph();

        // note undirected edges are printed as: {<v1>,<v2>}
        System.out.println(stringGraph.toString());

        // create a graph based on URL objects
        DirectedGraph<URL, DefaultEdge> hrefGraph = createHrefGraph();

        // note directed edges are printed as: (<v1>,<v2>)
        System.out.println(hrefGraph.toString());
         * 
         */
    }
    
        /**
     * Creates a toy directed graph based on URL objects that represents link
     * structure.
     *
     * @return a graph based on URL objects.
     */
    private static DirectedGraph<URL, DefaultEdge> createHrefGraph()
    {
        DirectedGraph<URL, DefaultEdge> g =
            new DefaultDirectedGraph<URL, DefaultEdge>(DefaultEdge.class);

        try {
            URL amazon = new URL("http://www.amazon.com");
            URL yahoo = new URL("http://www.yahoo.com");
            URL ebay = new URL("http://www.ebay.com");

            // add the vertices
            g.addVertex(amazon);
            g.addVertex(yahoo);
            g.addVertex(ebay);

            // add edges to create linking structure
            g.addEdge(yahoo, amazon);
            g.addEdge(yahoo, ebay);
        } catch (MalformedURLException e) {
            e.printStackTrace();
        }

        return g;
    }

    /**
     * Craete a toy graph based on String objects.
     *
     * @return a graph based on String objects.
     */
    private static UndirectedGraph<String, DefaultEdge> createStringGraph()
    {
        UndirectedGraph<String, DefaultEdge> g =
            new SimpleGraph<String, DefaultEdge>(DefaultEdge.class);

        String v1 = "v1";
        String v2 = "v2";
        String v3 = "v3";
        String v4 = "v4";

        // add the vertices
        g.addVertex(v1);
        g.addVertex(v2);
        g.addVertex(v3);
        g.addVertex(v4);

        // add edges to create a circuit
        g.addEdge(v1, v2);
        g.addEdge(v2, v3);
        g.addEdge(v3, v4);
        g.addEdge(v4, v1);

        return g;
    }
}
